package main

import "fmt"

func main() {
	count := 10

	// 用通道来阻塞
	// struct{}空结构体它占用的内存空间是0字节。用来做通道的信号量很合适
	ch := make(chan struct{}, 10)

	for i := 0; i < count; i++ {
		go func(num int) {
			fmt.Println(num)
			ch <- struct{}{}
		}(i)
	}

	for i := 0; i < count; i++ {
		<-ch
	}

}
